/**
 *
 *
 * @author TOTORO
 * @date 2021/7/1 10:44
 */

$(function () {
    $(document).ready(function () {
        var options=$("#J_redstar_city option:selected");//获取当前选择项.
        console.log(options.text());
    })
    // mouseHover Head-box
    $(".pf-avatar-box").hover(function () {
        $(".pf-edit-avatar").show();
    }, function () {
        $(".pf-edit-avatar").hide();
    });

    $(".pf-edit-avatar").click(function () {
        $("#submitHead").click();
    });

    $("#submitHead").change(function () {
        // 获得当前图片元素，判断该文件大小，不能大于3M
        var file = $(this);
        var fileSize = file[0].files[0].size;
        if(fileSize > 1024 * 1024 *1){
            // 显示消息
            alert("文件过大！上传失败");
            return false;
        }
        var ext=file.val().substring(file.val().lastIndexOf(".")+1).toLowerCase();
        // 将图片预览
        html5Reader(file,$("#userHead"));
    });
});


//H5渲染，上传图片
function html5Reader(file,pic) {
    var file = file[0].files[0];
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function (e) {
        pic.attr("src", this.result);
    }
}

// 当输入昵称时，需要修改提交表单的input
$("#J_uniqueName-mask").keyup(function () {
    $("#J_uniqueName").val($(this).val());
    $(this).val($(this).val());
});



// 表单验证 !!
$("#baseInfoForm").submit(function () {
    // 条件 名字合格1
    var nameQualified1 = $("#J_uniqueName").val().length>=5 && $("#J_uniqueName").val().length<=25;
    var nameQualified2 = !Totoro.isNumber($("#J_uniqueName").val());
    // 性别选中
    var sexQualified =  $('input:radio[name="sex"]:checked').length > 0;
    // 是否注册过

    if(!nameQualified1){
        $("#nameTip").css("display","inline-block").children().text("用户名应在5-25个字符");
        return false;
    } else{
        $("#nameTip").hide();
    }

    if(!nameQualified2){
        $("#nameTip").css("display","inline-block").children().text("不能全部为数字");
        return false;
    } else{
        $("#nameTip").hide();
    }
    var flag = false;
    // ajax从服务端验证是否被注册
    $.ajax({
        type: "POST",
        url: "/user_logic/isHaveUserName.htm",
        async: false, // 是否异步处理
        data: {'name': $("#J_uniqueName").val()},
        success: function (res) {
            flag = res!="ok";
            console.log(flag);
            if(flag){
                $("#nameTip").css("display","inline-block").children().text("该用户名已被使用！");
            } else{
                $("#nameTip").hide();
            }
        }
    });

    if(flag){
        $("#nameTip").css("display","inline-block").children().text("该用户名已被使用！");
        return false;
    } else{
        $("#nameTip").hide();
    }

    if(!sexQualified){
        $("#sexTip").css("display","inline-block");
        return false;
    } else{
        $("#sexTip").hide();
    }
})







// ----------------------以下为地区级联 ------------------------------

// 加载文档后，加载省级地区下拉框
var $redstar_province  = $("#J_redstar_province");
var $redstar_city = $("#J_redstar_city");
var $redstar_area = $("#J_redstar_area");

var $live_province = $("#J_live_province");
var $live_city = $("#J_live_city");
var $live_area = $("#J_live_area");
// 加载地区  进行判断用户之前是否已有地区的选择
$(document).ready(function () {
    $.ajaxSettings.async = false;
        // 循环第一个市级标签
    $.get("/static/json/city_code.json", function (data) {
        for (let i = 0; i < data.length; i++) {
            var name="";
            // 如果有这个属性，就继续判断
            if(data[i].hasOwnProperty("city")) {
                if ("市辖区" == data[i].city[0].name + "") {
                    name = data[i].name.substring(0, (data[i].name.length - 1));
                    isY = true;
                } else {
                    isY = false;
                }
            }
            if(!isY) {
                name = data[i].name;
            }
            $redstar_province.append("<option value='" + data[i].code + "'>" + name + "</option>");
            $live_province.append("<option value='" + data[i].code + "'>" + name + "</option>");
        }
    });

    // 如果用户存有居住地地区
    if($("#redstar").val().length>0){
        // 选中对应的省级地区
        var redstars = $("#redstar").val().split(" ");
        $("#J_redstar_province option[value='"+redstars[0]+"']").prop("selected","selected");
        // 生成对应的市级地区 并 选中
        changeCity(redstars[0], $redstar_city);
        $("#J_redstar_city option[value='"+redstars[1]+"']").prop("selected","selected");

        changeArea(redstars[1], $redstar_area);
        $("#J_redstar_area option[value='"+redstars[2]+"']").prop("selected","selected");
    }

    // 如果用户存有家乡地区
    if($("#live").val().length>0){
        // 选中对应的省级地区
        var lives = $("#live").val().split(" ");
        $("#J_live_province option[value='"+lives[0]+"']").prop("selected","selected");
        // 生成对应的市级地区 并 选中
        changeCity(lives[0], $live_city);
        $("#J_live_city option[value='"+lives[1]+"']").prop("selected","selected");

        changeArea(lives[1], $live_area);
        $("#J_live_area option[value='"+lives[2]+"']").prop("selected","selected");
    }

});

$(function () {
    // 昵称输入框焦点事件
    $("#J_uniqueName-mask").focus(function () {
        $(this).val($("#J_uniqueName").val());
    }).blur(function () {
        $(this).val(Totoro.getCiphertext($("#J_uniqueName").val().toString()));
    });

    // 真实姓名输入框焦点事件
    $("#J_realname-mask").focus(function () {
        $(this).val($("#J_realname").val());
    }).blur(function () {
        $(this).val(Totoro.getCiphertext($("#J_realname").val().toString()));
    })


    // 居住地 省级下拉框的改变事件
    $redstar_province.change(function () {
        var cityCode = changeCity($(this).val(), $redstar_city);
        changeArea(cityCode, $redstar_area);
        // 填充
        $("#redstar").val(getAllRedstarCode());
        $("#redstarText").val(getAllRedstarText());
    });

    // 居住地 市级下拉框的改变事件
    $redstar_city.change(function () {
        changeArea($(this).val(), $redstar_area);
        // 填充
        $("#redstar").val(getAllRedstarCode());
        $("#redstarText").val(getAllRedstarText());
    });

    $redstar_area.change(function () {
        // 填充
        $("#redstar").val(getAllRedstarCode());
        $("#redstarText").val(getAllRedstarText());
    });


    // 家乡 省级下拉框的改变事件
    $live_province.change(function () {
        var cityCode = changeCity($(this).val(), $live_city);
        changeArea(cityCode, $live_area);
        $("#live").val(getAllLiveCode());
        $("#liveText").val(getAllRedstarText());
    });

    // 家乡 市级下拉框的改变事件
    $live_city.change(function () {
        changeArea($(this).val(), $live_area);
        $("#live").val(getAllLiveCode());
        $("#liveText").val(getAllRedstarText());
    });

    $live_area.change(function () {
        $("#live").val(getAllLiveCode());
        $("#liveText").val(getAllRedstarText());
    })

});

/**
 * 获取居住地的code
 * @returns {string}
 */
function getAllRedstarCode() {
    var pid = $redstar_province.val();
    var cid = $redstar_city.val();
    var aid = $redstar_area.val();
    return pid+" "+cid+" "+aid;
}

/**
 * 获得居住地的文本
 * @returns {string}
 */
function getAllRedstarText(){
    var pt = $redstar_province.find("option:selected").text();
    var ct = $redstar_city.find("option:selected").text();
    var at = $redstar_area.find("option:selected").text();
    return pt+" "+ct+" "+at;
}

/**
 * 获取家乡的code
 * @returns {string}
 */
function getAllLiveCode() {
    var pid = $live_province.val();
    var cid = $live_city.val();
    var aid = $live_area.val();
    return pid+" "+cid+" "+aid;
}

/**
 * 获得家乡的文本
 * @returns {string}
 */
function getAllLiveText(){
    var pt = $live_province.find("option:selected").text();
    var ct = $live_city.find("option:selected").text();
    var at = $live_area.find("option:selected").text();
    return pt+" "+ct+" "+at;
}

function changeCity(code, el) {
    // 先清除之前的option
    el.html("");
    var cityCode;
    $.ajaxSettings.async = false;
    $.get("/static/json/city_code.json", function (data) {
        var name = "";
        for (let i = 0; i < data.length; i++) {
            // 如果ID和选择的ID一样
            if(data[i].code == code){
                // 如果拥有city属性，才继续
                if(data[i].hasOwnProperty("city")) {
                    // 如果是直辖区，那就保持之前的
                    if ("市辖区" == data[i].city[0].name + "") {
                        // 直接填充data[i].name
                        el.append("<option value='"+data[i].city[0].code+"'>"+data[i].name+"</option>");
                        cityCode = data[i].city[0].code;
                    } else{
                        // 循环填充
                        for (let j = 0; j < data[i].city.length; j++) {
                            el.append("<option value='"+data[i].city[j].code+"'>"+data[i].city[j].name+"</option>");
                            // 获取市级区的第一个，自动填充县级区
                            cityCode = data[i].city[0].code;
                        }
                    }
                }
            }
        }
    });
    $.ajaxSettings.async = true;
    return cityCode;
}

/**
 * 改变地区
 * @param code
 * @param el
 */
function changeArea(code, el) {
    $.ajaxSettings.async = false;
    // 清除之前的option标签
    el.html("");
    $.get("/static/json/city_code.json", function (data) {
        for (let i = 0; i < data.length; i++) {
            if(data[i].hasOwnProperty("city")) {
                for (let j = 0; j < data[i].city.length; j++) {
                    if(code == data[i].city[j].code){
                        for (let k = 0; k < data[i].city[j].area.length; k++) {
                            // 如果是市辖区，不会填充
                            if(data[i].city[j].area[k].name == "市辖区"){
                                continue;
                            }
                            // 填充
                            el.append("<option value='"+data[i].city[j].area[k].code+"'>"+data[i].city[j].area[k].name+"</option>");
                        }
                    }
                }
            }
        }
    });
    $.ajaxSettings.async = true;
}
